package cn.jeeweb.common.mybatis.mvc.service;

import cn.jeeweb.common.http.DuplicateValid;
import cn.jeeweb.common.http.Response;
import cn.jeeweb.common.query.data.Page;
import cn.jeeweb.common.query.data.Queryable;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;

public interface ICommonService<T> extends IService<T> {
     /**
      * <p>
      * 插入一条记录（选择字段，策略插入）
      * </p>
      *
      * @param json 实体对象
      * @return boolean
      */
     boolean insert(String json);
     T insertAndSelect(String json);
     T insertAndSelect(String json,String json_);
     boolean insert(T entity);
     T insertAndSelect(T entity);
     /**
      * <p>
      * TableId 注解存在更新记录，否插入一条记录
      * </p>
      *
      * @param json 实体对象
      * @return boolean
      */
     boolean insertOrUpdate(String json);

     boolean deleteBatchIds(String json);

     Page<T> list(Queryable queryable);

     Page<T> list(Queryable queryable,String type,String foreignId);

     Page<T> list(Queryable queryable, Wrapper<T> wrapper);

     List<T> listWithNoPage(Queryable queryable);

     List<T> listWithNoPage(Queryable queryable,String foreignId);

     List<T> listWithNoPage(Queryable queryable, Wrapper<T> wrapper);

     Boolean doValid(DuplicateValid duplicateValid, Wrapper<T> wrapper);

     boolean deleteById(String json);

     T getById(String json);


     boolean insertRelationTable(String json);

     boolean updateRelationTable(String json);

     Response export(Page pageBean,String title);

     boolean deleteRelationTable(String json);

     boolean insertOrUpdate(String json, String json_);
}